<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/BasicTemplate.dwt" codeOutsideHTMLIsLocked="false" -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- InstanceBeginEditable name="doctitle" -->
<title>Rewired Documentation | Frequently Asked Questions</title>
<!-- InstanceEndEditable -->
<!-- InstanceParam name="isRoot" type="boolean" value="false" -->
<!-- InstanceParam name="wide" type="boolean" value="false" -->
<link href="files/css/styles.css" rel="stylesheet" type="text/css" />
<!-- Favicons -->
<link rel="icon" type="image/x-icon" href="/projects/rewired/files/images/favicon.ico?v=1" />
<!-- Apple Icons -->
<!-- For iPad with high-resolution Retina display running iOS = 7: -->
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="files/images/favicon_152x152.png?v=1">
<!-- For iPad with high-resolution Retina display running iOS = 6: -->
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="files/images/favicon_144x144.png?v=1">
<!-- For iPhone with high-resolution Retina display running iOS = 7: -->
<link rel="apple-touch-icon-precomposed" sizes="120x120" href="files/images/favicon_120x120.png?v=1">
<!-- For iPhone with high-resolution Retina display running iOS = 6: -->
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="files/images/favicon_114x114.png?v=1">
<!-- For the iPad mini and the first- and second-generation iPad on iOS = 7: -->
<link rel="apple-touch-icon-precomposed" sizes="76x76" href="files/images/favicon_76x76.png?v=1">
<!-- For the iPad mini and the first- and second-generation iPad on iOS = 6: -->
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="files/images/favicon_72x72.png?v=1">
<!-- For non-Retina iPhone, iPod Touch, and Android 2.1+ devices: -->
<link rel="apple-touch-icon-precomposed" href="files/images/favicon_57x57.png?v=1">
</head>

<body>


<div class="container">

    <div class="google-search-bar">
        <script>
          (function() {
            var cx = '007961148920562332911:oocvtwz5jce';
            var gcse = document.createElement('script');
            gcse.type = 'text/javascript';
            gcse.async = true;
            gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(gcse, s);
          })();
        </script>
        <gcse:search></gcse:search>
    </div>

  <div class="content">
	
	
	 
    <div class="page-body">
	
    
         
	    
      	<div class="sidebar-nav">
	        <h4><a href="Documentation.html">Documentation</a></h4>
	        <ul>
	          <li><a href="Overview.html">Overview</a></li>
	          <li><a href="ReleaseNotes.txt">Release Notes</a></li>
          </ul>
	        <strong>Essentials:</strong>
            <ol>
              <li><a href="Installation.html">Installation</a></li>
              <li><a href="QuickStart.html">Quick Start</a></li>
              <li><a href="BasicUsage.html">Basic Usage</a></li>
              <li><a href="Deployment.html">Deployment</a></li>
              <li><a href="BestPractices.html">Best Practices</a></li>
              <li><a href="RewiredEditor.html">Rewired Editor</a></li>
              <li><a href="https://guavaman.com/projects/rewired/docs/api-reference" target="_blank">API Reference</a></li>
            </ol>
            <strong>Concepts:</strong>
            <ul>
              <li><a href="InputManager.html">Input Manager</a></li>
              <li><a href="Players.html">Players</a></li>
              <li><a href="Actions.html">Actions</a></li>
              <li><a href="InputBehaviors.html">Input Behaviors</a></li>
              <li><a href="Controllers.html">Controllers</a></li>
              <li><a href="ControllerMaps.html">Controller Maps</a></li>
              <li><a href="ControllerTemplates.html">Controller Templates</a></li>
              <li><a href="MapCategories.html">Map Categories</a></li>
              <li><a href="Layouts.html">Layouts</a></li>
              <li><a href="LayoutManager.html">Layout Manager</a></li>
              <li><a href="MapEnabler.html">Map Enabler</a></li>
              <li><a href="CustomControllers.html">Custom Controllers</a></li>
            </ul>
            <strong>Extras:</strong>
            <ul>
              <li><a href="ControlMapper.html" title="Control Mapper">Control Mapper</a></li>
	          <li><a href="TouchControls.html" title="Touch Controls">Touch Controls</a></li>
              <li><a href="RewiredStandaloneInputModule.html">Rewired Standalone Input Module</a></li>
	          <li><a href="UnityInputOverride.html" title="Unity Input Override">Unity Input Override</a></li>
            </ul>
            <strong>Misc:</strong>
            <ul>
	          <li><a href="ComponentControls.html" title="Component Controls">Component Controls</a></li>
	          <li><a href="PlayerControllers.html" title="Player Controllers">Player Controllers</a></li>
	          <li><a href="InputMapper.html" title="Input Mapper">Input Mapper</a></li>
	          <li><a href="UserDataStore.html" title="User Data Store">User Data Store</a></li>
            </ul>
            <strong>How To's:</strong>
            <ul>
            	<li><a href="HowTos.html">See all topics...</a></li>
            </ul>
            <strong>Help:</strong>
            <ul>
              <li><a href="SupportedControllers.html" title="Supported Controllers">Supported Controllers</a></li>
              <li><a href="Overview.html#tested-platforms" title="Tested Platforms">Tested Platforms</a></li>
              <li><a href="Troubleshooting.html" title="Troubleshooting">Troubleshooting</a></li>
              <li><a href="KnownIssues.html">Known Issues</a></li>
              <li><a href="SpecialPlatformSupport.html" title="Special Platform Support">Special Platform Support</a></li>
	          <li><a href="Examples.html" title="Examples">Examples</a></li>
              <li><a href="Integration.html">Integrations</a></li>
	          <li><a href="Updating.html" title="Updating Rewired">Updating Rewired</a></li>
            </ul>
            <strong>FAQ</strong>
            <ul>
            	<li><a href="FAQ.html">See all topics...</a></li>
            </ul>
            <strong>Unity Help:</strong>
            <ul>
              <li><a href="https://docs.unity3d.com/Manual/" target="_blank">Unity Manual</a></li>
              <li><a href="https://docs.unity3d.com/ScriptReference/" target="_blank">Unity Script Reference</a></li>
              <li><a href="https://unity3d.com/learn/tutorials/modules" target="_blank">Unity Tutorials</a></li>
            </ul>
            <strong>Links:</strong>
            <ul>
              <li><a href="https://guavaman.com/projects/rewired">Rewired Website</a></li>
              <li><a href="https://guavaman.com/projects/rewired/docs">Web Documentation</a></li>
            </ul>
        </div>
        
    
    	<div class="main-body">
	        <div class="logo"><a href="https://guavaman.com/projects/rewired" title="Rewired"><img src="files/images/rewired-logo.png" width="173" height="139" alt="Rewired" /></a></div>
                     
            <h1>
            <!-- InstanceBeginEditable name="PageHeader" -->Frequently Asked Questions<!-- InstanceEndEditable -->
            </h1>
            
			<!-- InstanceBeginEditable name="MainBody" -->

    <p><strong>Topics:</strong></p>
    <ul>
      <li><a href="#does-rewired-support-vr-controllers">Does Rewired support Oculus Touch, HTC Vive, etc?</a></li>
      <li><a href="#does-rewired-support-x-controller">Does Rewired support this controller?</a></li>
      <li><a href="#addding-controller-definitions">Can you/I add support for this controller?</a></li>
      <li><a href="#supported-platforms">What platforms does Rewired support?</a></li>
      <li><a href="#wiiu-support">Does Rewired support WiiU?</a></li>
      <li><a href="#switch-support">Does Rewired support Nintendo Switch?</a></li>
      <li><a href="#webgl-support">Does Rewired support WebGL?</a></li>
      <li><a href="#touch-gyro-accelerometer">Does Rewired support touch and gyro/accelerometer input?</a></li>
      <li><a href="#force-feedback">Does Rewired support force feedback?</a></li>
      <li><a href="#framerate-independent-input">Does Rewired support framerate-independent input?</a></li>
      <li><a href="#fixed-update-framerate-independent-input">Can't Fixed Update be used for low-latency input at low frame rates?</a></li>
      <li><a href="#multiple-mice-and-keyboards">Does Rewired support multiple independent mice and keyboards?</a></li>
      <li><a href="#where-is-data-saved">Where is Rewired's input configuration data saved?</a></li>
      <li><a href="#copy-input-config">How can I copy my input configuration to another project?</a></li>
      <li><a href="#code-purist">I don't like using visual editors and like to code everything myself. Can I use Rewired without using the Rewired Editor?</a></li>
      <li><a href="#edit-rewired-input-manager-data-scripting">Can I create new Players, Actions, Controller Map definitions, Input Behaviors, and other data managed by the Rewired Editor through scripting in the Unity Editor instead of using the Rewired Editor?</a></li>
      <li><a href="#edit-rewired-input-manager-data-at-runtime">Can I create new Players, Actions, Controller Map definitions, Input Behaviors, and other data managed by the Rewired Editor at runtime?</a></li>
      <li><a href="#consume-input">How do you consume/use an input?</a></li>
      <li><a href="#default-dead-zone">My joystick's dead zone is too large/small. How do I change it?</a></li>
      <li><a href="#gesture-bindings">How can I bind an Action to a button short-press  and another Action to a long-press?</a></li>
      <li><a href="#nintendo-wiiu-adapter-driver">Can the Nintendo WiiU 4-player adapter be used without requiring users to install a driver?</a></li>
      <li><a href="#nintendo-wiiu-adapter-desktop">Does Rewired support the official Nintendo WiiU adapter on desktop platforms?</a></li>
      <li><a href="#set-mouse-cursor-position">Can Rewired set the mouse cursor position?</a></li>
      <li><a href="#source-code">Can I get the Rewired source code?</a></li>
      <li><a href="#seat-license">What does &quot;this extension requires one licence per seat&quot; mean?</a></li>
      <li><a href="#discounts">Do you offer educational or bulk license discounts?</a></li>
    </ul>
    <p>&nbsp;</p>
    <hr />

    <h3><a name="does-rewired-support-vr-controllers" id="does-rewired-support-vr-controllers"></a>Does Rewired support Oculus Touch, HTC Vive, etc?
    </h3>
    <p>Rewired has limited support for Oculus Touch and HTC Vive controllers. Please see the following sections for more information:</p>
    <ul>
      <li><a href="SupportedControllers.html#oculus-touch">Oculus Touch</a></li>
      <li><a href="SupportedControllers.html#openvr-controller">HTC Vive / OpenVR</a></li>
    </ul>
    <p>Also, see <a href="#does-rewired-support-x-controller">Does Rewired support this controller?</a></p>
    <p>&nbsp;</p>
    <hr />
    <h3><a name="does-rewired-support-x-controller" id="does-rewired-support-x-controller"></a>Does Rewired support this controller?</h3>
    <p>Usually, this question is asked about exotic controllers such as Arduino, Oculus Touch and Remote, HTC Vive, exotic VR controllers, or some other special-purpose controller that requires its own SDK to use. Rewired does not support such controllers directly. Any use of such controller would require you set up the company's SDK and use a <a href="CustomControllers.html">Custom Controller</a> to add support for the device. Even this may not work for all devices. (See <a href="#does-rewired-support-vr-controllers">this topic for information</a> on limited support for Oculus Touch and HTC Vive / OpenVR.)</p>
<p>Rewired is not a general-purpose, low-level API for working with any and all HID devices.</p>
<p>See <a href="SupportedControllers.html">Supported Controllers</a> for more information.</p>
<p>&nbsp;</p>
<hr />
<h3><a name="addding-controller-definitions" id="does-rewired-support-x-controller3"></a>Can you/I add support for this controller?</h3>
<p>It depends. Not all controllers are candidates for Rewired's automatic controller recognition system. The controller would have to be evaulated for inclusion.</p>
<p>Rewired's controller recognition system relies on information returned by the controller in order to be able to recognize it and load a hardware definition. Many times, the identifying information provided by the device is inadequate or too generic to be relied upon for recognition, for example those that show up as &quot;Generic USB Joystick&quot;, &quot;USB Gamepad&quot;, etc. This is true of a huge number of generic PC gamepads. The manufacturers of these gamepads create dozens and dozens of different products under a large variety of brands, some even with different button layouts, yet all of these devices provide exactly the same identifying USB/HID information (both product name and VID/PID). This makes it impossible to auto-recognize these controllers. If you were to add a controller definition for just one of these controllers, all others that don't match the button layout exactly would report incorrect element names and default mappings in the best case, and would be essentially unusable in the worst case. For these controllers, the only solution is to not provide a controller definition so that they will be treated as <a href="ControllerMaps.html#unknown-controllers">Unknown Controller</a> which the user can map manually using <a href="ControlMapper.html">Control Mapper</a> or <a href="HowTos.html#controller-mapping-screen">your own custom control remapping system</a>.</p>
<p>The solution to allowing users to use these kinds of controllers and others without definitions is to give your players a way to remap their controls. It is a must that you have a system to let your player   remap their controllers so they can use any controller they want. It is a core   feature of Rewired to allow users to be able to use any controller regardless of   whether or not it is recognized, including the ability to save and load their   configurations. The controller recognition system is only really there as a   convenience so that the most common controllers work without manual   configuration out of the box, but it is not a substitute for being able to map   controllers.</p>
<p>See <a href="HowTos.html#new-controller-definitions">How To's - Creating new controller definitions</a> for more information on adding your own controller definitions.</p>
<p>&nbsp;</p>
<hr />
<h3><a name="supported-platforms" id="does-rewired-support-x-controller4"></a>What platforms does Rewired support?</h3>
<p><a href="Overview.html#tested-platforms">See the list of tested platforms here.</a></p>
<p>&nbsp;</p>
<hr />
<h3><a name="wiiu-support" id="default-dead-zone3"></a>Does Rewired support WiiU?</h3>
<p>WiiU is not a directly supported platform. In addition, WiiU controllers do not work through UnityEngine.Input so the default fallback mode doesn't work. However, it is possible to support WiiU through the use of <a href="CustomControllers.html">Custom Controllers</a>.</p>
<p>&nbsp;</p>
<hr />
<h3><a name="switch-support" id="switch-support"></a>Does Rewired support Nintendo Switch?</h3>
<p>Yes, but it requires installation of a separate plugin and is only available to licensed Nintendo developers. Please visit the <a href="https://developer.nintendo.com" target="_blank">Nintendo Developer Portal</a> for more information on how to obtain the plugin.</p>
<p>&nbsp;</p>
<hr />
<h3><a name="webgl-support" id="default-dead-zone6"></a> Does Rewired support WebGL?</h3>
<p>Rewired does run on WebGL and includes a native library for WebGL (Unity 5.0+) allowing it to get input directly from the web browser avoid many issues with Unity's input system on WebGL. <a href="SupportedControllers.html#webgl">With the exception of a few of the most common gamepads</a>,  most controllers on WebGL will not be recognized automatically are only supported via manual user mapping of controls at runtime through the use of a system like <a href="ControlMapper.html">Control Mapper</a>.</p>
<p>Even with a native input librarly, controller support on WebGL is problematic at best. Rewired does its best to make things work when possible, but there are many bugs and issues that vary by web browser, version of the browser,  operating system, version of the operating system, and drivers in use which simply cannot be fixed by any layer above the web browser itself.</p>
<p>A few issues / limitations:</p>
<ul>
  <li>Some controllers do not work properly or at all on some platforms in some web browsers.</li>
  <li>Individual elements on certain controllers may not work properly or at all such as many D-Pads not working, buttons being stuck on permanently, etc.</li>
  <li>There  is a limit on the number of controllers simultaneously supported that varies depending on the browser in use.</li>
  <li>As a security measure by the browser, controllers do not appear to the system until a button is pressed on a controller.</li>
  <li>Vibration is not supported. (Support for gamepad vibration in browsers is at the very early experimental stages.)</li>
</ul>
<p>&nbsp;</p>
<hr />
<h3><a name="touch-gyro-accelerometer" id="touch-gyro-accelerometer"></a>Does Rewired support touch and gyro/accelerometer control?</h3>
  <p><strong>On-screen touch joysticks</strong><br />
    Rewired comes with set of pre-built <a href="TouchControls.html">touch controls</a> for use directly in your games. For   other special needs, you can use the <a href="CustomControllers.html">Custom Controller</a> system to pipe in data from any kind of control which you can   either build or download from the <a href="https://www.assetstore.unity3d.com/en/" target="_blank">Unity Asset Store</a> or elsewhere. There is a simple <a href="https://guavaman.com/projects/rewired/docs/Examples.html#touch-controls-1">on-screen touch joystick example</a> included with Rewired showing the concept.</p>

<p><strong>Touch swipes and gestures</strong><br />
  Rewired does not include any handling of swipe or gesture recognition. For   gestures, if it makes sense to map them to input <a href="Actions.html">Actions</a>, you can  use the <a href="CustomControllers.html">Custom Controller</a> system coupled with a gesture recognizer script/asset and pipe   the gestures in as button values in a <a href="CustomControllers.html">Custom Controller</a> and then map those buttons to Actions.</p>
<p><strong>Gyro and accelerometer input</strong><br />
  Rewired comes with a <a href="ComponentControls.html#tilt-control">Tilt Control</a> component which can be used for basic tilt input. It also supports <a href="HowTos.html#appletv-siri-remote">tilt and rotate on the Siri Remote on tvOS</a>, and the <a href="HowTos.html#dualshock-4-special-features">gyro on the Sony Dual Shock 4</a> and Nintendo Joy-Cons (Switch platform only). For any other tilt/motion needs,  you can use UnityEngine.Input to get the motion data, process it, and then use that information to feed into a <a href="CustomControllers.html">Custom Controller</a> to map certain types of motion to Actions. Rewired also comes with a simple tilt control  <a href="https://guavaman.com/projects/rewired/docs/Examples.html">example</a>.</p>
<p>&nbsp;</p>
<hr />
<h3><a name="force-feedback" id="default-dead-zone5"></a>Does Rewired support force feedback?</h3>
<p>The only forms of force feedback currently supported by Rewired are gamepad vibration and DualSense trigger haptics. Vibration works with certain controllers on certain platforms and input sources.</p>
<p>Currently vibration is only supported on the following controllers and platforms and input sources:</p>
<table width="100%" border="0" class="supported-controllers-table">
  <tr>
    <td>&nbsp;</td>
    <td align="center"><strong>Windows</strong></td>
    <td align="center"><strong>OSX</strong></td>
    <td align="center"><strong>Linux</strong></td>
    <td align="center"><strong>Windows 8.0 &amp; 8.1 Store</strong></td>
    <td align="center"><strong>Windows 10 Universal</strong></td>
    <td align="center"><strong>Xbox One</strong></td>
    <td align="center"><strong>Xbox Series S/X</strong></td>
    <td align="center"><strong>PlayStation 4</strong></td>
    <td align="center"><strong>PlayStation 5</strong></td>
    <td align="center"><strong>Nintendo Switch</strong></td>
    <td align="center"><strong>Stadia</strong></td>
  </tr>
  <tr>
    <td valign="top">Xbox 360 Controller</td>
    <td align="center" valign="top"><ul>
      <li>XInput</li>
      <li> SDL2*</li>
    </ul></td>
    <td align="center" valign="top"><ul>
      <li>Native<br />
        <span class="note">(<a href="https://github.com/360Controller/360Controller/releases" target="_blank">Driver required</a>)</span></li>
      <li>Game Controller Framework</li>
    </ul>      </td>
    <td align="center" valign="top"><ul>
      <li> Native</li>
      <li>SDL2*</li>
    </ul></td>
    <td align="center" valign="top">Native</td>
    <td align="center" valign="top">Native</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&nbsp;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">Native</td>
  </tr>
  <tr>
    <td valign="top">Xbox One Controller</td>
    <td align="center" valign="top"><ul>
      <li>XInput<br />
        <span class="note">(2 of 4 motors supported)</span></li>
      <li>Windows Gaming Input<br />
        <span class="note">(All motors supported)</span>      </li>
      <li> SDL2*</li>
    </ul></td>
    <td align="center" valign="top"><ul>
      <li>Native<br />
        <span class="note">(2 of 4 motors supported)<br />
          (<a href="https://github.com/360Controller/360Controller/releases" target="_blank">Driver required</a>)</span></li>
      <li>Game Controller Framework</li>
    </ul>      </td>
    <td align="center" valign="top">Not tested</td>
    <td align="center" valign="top">Native<br />
      <span class="note">(2 of 4 motors supported)</span></td>
    <td align="center" valign="top">Native<br />
      <span class="note">(All 4 motors supported)</span></td>
    <td align="center" valign="top">Native<br />
      <span class="note">(All 4 motors supported)</span></td>
    <td align="center" valign="top">Native<br />
      <span class="note">(All 4 motors supported)</span></td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">Native</td>
  </tr>
  <tr>
    <td valign="top">Xbox One S Controller</td>
    <td align="center" valign="top"><ul>
      <li>XInput<br />
        <span class="note">(2 of 4 motors supported)</span></li>
      <li>Windows Gaming Input<br />
        <span class="note">(All motors supported)<br />
        </span></li>
      <li> SDL2*</li>
    </ul></td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">Native<br />
      <span class="note">(2 of 4 motors supported)</span></td>
    <td align="center" valign="top">Native<br />
      <span class="note">(All 4 motors supported)</span></td>
    <td align="center" valign="top">Native<br />
      <span class="note">(All 4 motors supported)</span></td>
    <td align="center" valign="top">Native<br />
      <span class="note">(All 4 motors supported)</span></td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">Native</td>
  </tr>
  <tr>
    <td valign="top">Sony DualShock 4</td>
    <td align="center" valign="top">Raw Input<br />
      <span class="note">(<a href="RewiredEditor.html#settings-windows-enhanced-device-support">Enhanced Device Support</a> required)</span></td>
    <td align="center" valign="top"><ul>
      <li>Native<br />
        <span class="note">(<a href="RewiredEditor.html#settings-osx-enhanced-device-support">Enhanced Device Support</a> required, wired only)</span></li>
      <li>Game Controller Framework</li>
    </ul>      </td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&nbsp;</td>
    <td align="center" valign="top">Native</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">Native</td>
  </tr>
  <tr>
    <td valign="top">Sony DualSense</td>
    <td align="center" valign="top">Raw Input<br />
      <span class="note">(<a href="RewiredEditor.html#settings-windows-enhanced-device-support">Enhanced Device Support</a> required)</span></td>
    <td align="center" valign="top"><ul>
      <li>Native<br />
        <span class="note">(<a href="RewiredEditor.html#settings-osx-enhanced-device-support">Enhanced Device Support</a> required, wired only)</span></li>
      <li>Game Controller Framework</li>
    </ul>      </td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&nbsp;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">Native</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">Native</td>
  </tr>
  <tr>
    <td valign="top">Nintendo Joy-Cons </td>
    <td align="center" valign="top">Raw Input<br />
      <span class="note">(<a href="RewiredEditor.html#settings-windows-enhanced-device-support">Enhanced Device Support</a> required)</span></td>
    <td align="center" valign="top">Native<br />
      <span class="note">(<a href="RewiredEditor.html#settings-windows-enhanced-device-support">Enhanced Device Support</a> required)</span></td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&nbsp;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">Native<br />
      <span class="note">(All motors and features supported)</span></td>
    <td align="center" valign="top">&mdash;</td>
  </tr>
  <tr>
    <td valign="top">Nintendo Pro Controller</td>
    <td align="center" valign="top">Raw Input<br />
      <span class="note">(<a href="RewiredEditor.html#settings-windows-enhanced-device-support">Enhanced Device Support</a> required)</span></td>
    <td align="center" valign="top"><ul>
      <li>Native<br />
        <span class="note">(<a href="RewiredEditor.html#settings-osx-enhanced-device-support">Enhanced Device Support</a> required,)</span></li>
      <li>Game Controller Framework<br />
        <span class="note">(Wireless only.)</span></li>
    </ul></td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&nbsp;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">Native<br />
      <span class="note">(All motors and features supported)</span></td>
    <td align="center" valign="top">Native</td>
    </tr>
  <tr>
    <td valign="top">Stadia Controller</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&nbsp;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">&mdash;</td>
    <td align="center" valign="top">Native</td>
  </tr>
</table>
<p>&nbsp;</p>
<p>* SDL2 does not support separate motor speed values, so all motors are treated as a single motor.</p>
<p>&nbsp;</p>
<hr />
<h3><a name="framerate-independent-input" id="framerate-independent-input"></a>Does Rewired support framerate-independent input?</h3>
<p>Not at the present time. If framerate-independent input were to be supported in the future, it would only allow you to access a queue of Action events that took place over the last frame for analysis and not the ability to instantly respond to input events that occur in the middle of the current frame. This is because if you were to use any of the Unity API in response to an event that was triggered from another thread, Unity would throw an exception or crash because the entire Unity API is not thread-safe and can only be accessed via the main thread. This means you could not, for example, move the camera instantaneously based on a mouse input event that occured in the middle of the current frame in order to reduce input latency. Unity would just throw an exception when you tried to modify anything on the Camera, Transform, or any other component from another thread.</p>
<p>&nbsp;</p>
<hr />
<h3><a name="fixed-update-framerate-independent-input" id="fixed-update-framerate-independent-input"></a>Can't Fixed Update be used for low-latency input at low frame rates?</h3>
<p>It is sometimes suggested to me that if you were able to get and process fresh input values in Fixed Update, games running at low frame rates could maintain responsive input because Fixed Update runs at 60 fps even when the game is only running at 20 fps. This sounds reasonable on the surface, but it's not true. In order to understand why, you need to understand how Fixed Update works.</p>
<p><em><strong>Fixed Update is not a fixed-time-step update. It is a simulation of one.</strong></em></p>
<p>It is true that over 1 second, Fixed Update will attempt to run at the specified rate -- 60 fps, for example.<br />
  Depending on the current main thread update rate, Unity will execute 0, 1, or multiple Fixed Update frames for every Update frame it executes. These Fixed Update frames are executed on the same thread as Update immediately before Update is executed. It varies the number of Fixed Update frames it executes per frame to try to maintain the desired rate over 1 second of time (60 fps).</p>
<p>The most important thing to understand is that these <em><strong>Fixed Update frames are not actually spaced out over time in increments of 1/60th of a second</strong></em>. When multiple Fixed Update frames are executed sequentially in a frame (when the render frame rate is lower than physics time step), several Fixed Update frames are rendered back-to-back <em><strong>as fast as the CPU will possibly allow</strong></em>. This can easily be illustrated by timing frame time delta of Fixed Update frames using Time.realtimeSinceStartup. You will see the value is an extremely tiny number, not the expected 0.1667 seconds you should see at 60 fps. Physics and other code that uses the time or delta time value work corretly because the Time class reports the <em><strong>simulated delta time</strong></em> of 0.1667 seconds, not the <strong><em>actual delta time</em></strong> of a CPU speed and workload dependent value. </p>
<p>So over the course of a single render frame, the time window for recording input changes using Fixed Update is equal to the <em><strong>actual time</strong></em> it takes for those Fixed Update frames to execute, not the simulated time. In most cases, the actual time elapsed across successive Fixed Update frames is so short as to be completely useless to get any useful input data. For the entire remainder of the render frame (Update, Vsync, etc.), no new input values can be sampled. This is the reason Fixed Update is totally unsuitable for solving the input latency problem.</p>
<p>&nbsp;</p>
<p><img src="files/images/faq-fixed-update-explanation.png" alt="Fixed Update Explanation" /></p>
<p>&nbsp;</p>
<hr />
<h3><a name="multiple-mice-and-keyboards" id="multiple-mice-and-keyboards"></a>Does Rewired support multiple independent mice and keyboards?</h3>
<p>Not at this time. Multiple mice will act as one mouse and  multiple keyboards will act as one keyboard.</p>
<p>&nbsp;</p>
<hr />
    <h3><a name="where-is-data-saved" id="default-dead-zone2"></a>Where is Rewired's input configuration data saved?</h3>
    <p>In each Rewired Input Manager game object as serialized data. See <a href="InputManager.html">Input Manager</a> for more details.</p>
    <p>&nbsp;</p>
    <hr />
    <h3><a name="copy-input-config" id="copy-input-config"></a>How can I copy my input configuration to another project?</h3>
<p><a href="HowTos.html#copying-input-config">See How To's - Copying input configuration to another project</a>.</p>
<p>&nbsp;</p>
<hr />
    <h3><a name="consume-input" id="does-rewired-support-x-controller2"></a>How do you consume/use an input?</h3>
<p>There is no &quot;consume&quot; or &quot;use&quot; concept in Rewired. You cannot change or override 
  the final Action input values because they are set by the hardware events and then calculated 
  based on combined values of all input sources that contribute to that Action.<br />
  <br />
  This question is almost always asked due to the desire to use the input system as part of  in-game player state/permission management. For example, you should not think of
  Rewired's Player.GetButtonDown as a   flag denoting &quot;game player is now firing&quot;. It 
  should be thought of  as a signal of   the user's intent entirely separate 
  from the game simulation. GetButtonDown(&quot;Fire&quot;) is equal to &quot;the user wants 
  to fire&quot;. Whether or not   the game player is allowed to fire at that moment is a 
  game player state   management issue and needs to be handled in your game 
  code.</p>
<p>&quot;User wants to   fire&quot; -&gt; If &quot;game player is allowed to fire&quot; -&gt; then  &quot;fire&quot;.</p>
<p>Using Rewired   or any input system as an integral part of game state or permission management
  is not a correct   usage. This way there is no need for something like 
  consuming input and   injecting your game state permission management into the input 
  system.</p>
<p>&nbsp;</p>
<hr />
<h3><a name="code-purist" id="code-purist"></a>I don't like using visual editors and like to code everything myself. Can I use Rewired without using the Rewired Editor?</h3>
<p>Generally, no. The Rewired Editor is the heart of Rewired. The entire Player-Action system is dependent on data configured in the editor before runtime. If you want to use Rewired's Player-Action system (Controller Maps, etc.), you must configure the data using the Rewired Editor.</p>
<p>The only way you could use Rewired without using the Rewired Editor to configure data is if you completely ignore the entire Player-Action system and read input directly from the Controllers, largely defeating the purpose of using Rewired.</p>
<p>If you want to manage and configure every single thing in code instead of in an editor or you don't want to rely on Unity's serialization system for storing this data, you should use a different input system.</p>
<p>&nbsp;</p>
<hr />
<h3><a name="edit-rewired-input-manager-data-scripting" id="edit-rewired-input-manager-data-scripting"></a>Can I create new Players, Actions, Controller Map definitions, Input Behaviors, and other data managed by the Rewired Editor through scripting in the Unity Editor instead of using the Rewired Editor?</h3>
<p>No. The Rewired Editor is the only supported way to configure the data stored in the Rewired Input Manager. The API for modifying this data through scripting is undocumented and partially internal. Rewired's data is intended to be configured using the Rewired Editor, not through scripting.</p>
<p>Do not mistake this for meaning you cannot change settings and bindings at runtime. The developer-defined data stored in the Rewired Input Manager is static at runtime and cannot be changed, but the live instances created from that static data can certainly be changed at runtime through scripting. (Live instances include Players, Controller Maps, Input Behaviors, Rules and Rule Sets, etc.)</p>
<p>&nbsp;</p>
<hr />
<h3><a name="edit-rewired-input-manager-data-at-runtime" id="edit-rewired-input-manager-data-at-runtime"></a>Can I create new Players, Actions, Controller Map definitions, Input Behaviors, and other data managed by the Rewired Editor at runtime?</h3>
<p>No. The majority of data stored in the Rewired Input Manager is totally static at runtime (everything except settings). Upon initialization, Rewired instantiates all objects in the system including  Players, Actions, Input Behaviors, Controller Maps, Custom Controllers, Rules and Rule Sets, etc. based on what you've configured in the editor. The static data in the Rewired Input Manager cannot be changed at runtime. This means you cannot define new Actions, Players, Input Behaviors, etc. at runtime. However, the live instances of these objects (Players, Controller Maps, etc.) can be modified at runtime through scripting, and can even be saved to XML/JSON and reloaded at runtime. This means you can change controller bindings and various other properties at runtime and have those changes persist to the next game session.</p>
<p>You could think of the data stored in the Rewired Input Manager as the &quot;parent&quot; data (similar to the Prefab system in Unity) and the runtime Players, Controller Maps, etc., as instances of their parent. The parent cannot be changed at runtime, but the instances can. Parent data (Players, Actions, etc.) can only be created or modified at edit time in the Rewired Editor.</p>
<p>&nbsp;</p>
<hr />
<h3><a name="default-dead-zone" id="default-dead-zone"></a>My joystick's dead zone is too large/small. How do I change it?</h3>
<p>Rewired includes default dead zones for every recognized joystick. They are 
  built into the hardware definition for each joystick and specified 
  per-platform, per-input source. These defaults should not be changed because they 
  will be overwritten when you update Rewired. There is not currently a means of non-destructively overriding default hardware definition settings per-device.<br />
  <br />
  Controller dead zones are very individualized to each   physical joystick and 
  can vary due to manufacturing, wear and tear, etc. As   such, you should not 
  simply set an extremely large default dead zone if your joystick drifts.   Instead, you need to allow 
  your users to set their own dead zone specific to   their joystick. Rewired 
  allows you set all kinds of calibration information   for joysticks through 
  scripting. See <a href="HowTos.html#calibrating-controller-axes">How To's - Calibrating controller axes</a> for more information. You can see this implemented in both the <a href="Examples.html#controller-remapping-1">ControlRemappingDemo1</a> and <a href="ControlMapper.html">Control Mapper</a>.<br />
  <br />
  Using   Control Mapper in your game will give users the option to remap and 
  calibrate their controllers.</p>
<p>&nbsp;</p>
<hr />
<h3><a name="gesture-bindings" id="gesture-bindings"></a>How can I bind one Action to a button short-press  and another Action to a long-press?</h3>
<p>That would require the ability to bind an Action to a gesture, a gesture being an event triggered when some element value changes over time matching some pre-defined pattern. Rewired does not support this at the present time.</p>
<p>There are dozens of potential gestures that one could possibly want to handle for every type of controller element (axes especially). Rewired does not provide any binding of Actions to gestures. Action bindings are only to controller elements. That Action can then be queried for axis value, button on, button off, button just pressed, button just released, button double clicked, button short pressed, and button long pressed events. The Action bindings are not bound to gestures but to the button/axis element, and the Action can then be queried for those events listed above.<br />
  <br />
  Allowing binding Actions to  gestures such as &quot;short press X&quot;, &quot;press and hold X&quot;, etc. would <em>greatly</em> complicate user control rebinding. It would also complicate the Rewired editor requiring potentially dozens of options per supported gesture type (timings, activation exclusivity, cancellation behaviors, etc.) Because of the vast number of possible variables, these things are better handled in code based on the individual needs of the game in question.<br />
  <br />
  A gesture recognition and binding system would likely have to be an entirely separate layer on top of Rewired's current system. Gesture recognition and Action binding are  not currently  planned features.</p>
<p>&nbsp;</p>
<hr />
<h3><a name="nintendo-wiiu-adapter-driver" id="nintendo-wiiu-adapter-driver"></a>Can the Nintendo WiiU 4-player adapter be used without requiring users to install a driver?</h3>
<p>It is not possible. The Nintendo WiiU adapter is not a standard HID device and   cannot use the default Windows HID driver. This is an issue with the device   because it was not designed for use on Windows / PCs. It cannot be used by any   program without a 3rd party driver installed that can make it appear as a   standard HID device. There is no way around this.</p>
<p>&nbsp;</p>
<hr />
<h3><a name="nintendo-wiiu-adapter-desktop" id="nintendo-wiiu-adapter-desktop"></a>Does Rewired support the official Nintendo WiiU adapter on desktop platforms?</h3>
<p>Rewired <a href="SupportedControllers.html">does not provide extended support</a> for the Nintendo WiiU adapter.<br />
  <br />
  As   it states there:
  <br />
  <em>Any controller which does not have a hardware definition   will be usable only 
  through user mapping or by mapping actions to numbered   axes and buttons in 
  the Unknown Controller map. These unrecognized   controllers can only be  
  supported if you provide your users a way to remap   their controls, such as 
  by using the included Control Mapper or by creating   a custom control 
  remapping screen. If you do not provide users with a way to   map their 
  controls, only the above listed recognized controllers will be   usable. If 
  you do provide your users a way to map their controls, virtually   any 
  controller will be usable.</em><br />
  <br />
  The Nintendo   WiiU adapter does not have an official driver and cannot be 
  used without   some form of hack or 3rd party driver.  
  <a href="#nintendo-wiiu-adapter-driver">This device cannot even be detected without a HID driver.</a> If you look at the Dolphin 
  Wiki, which   is where most people use this adapter, you'll see <a href="https://wiki.dolphin-emu.org/index.php?title=How_to_use_the_Official_GameCube_Controller_Adapter_for_Wii_U_in_Dolphin">several
  methods to make it   work in Dolphin</a>.<br />
  <br />
  All   of these methods are hacks and none of them can provide any proper 
  identifying HID information which could be used to make a controller 
  definition for automatic recognition. There is no official or generally-used driver for this device that would identify it explicitly as a Nintendo WiiU Adapter, so it is not a candidate for 
  automatic controller recognition.<br />
  <br />
  If   you've provided a way to remap and assign controls to your users, they 
  should be able to use the device through user assignment and mapping as long 
  as they've gone through all the steps to set up the driver to make it be <br />
  recognized as a HID device.<br />
</p>
<p>&nbsp;</p>
<hr />
<h3><a name="set-mouse-cursor-position" id="set-mouse-cursor-position"></a>Can Rewired set the mouse cursor position?</h3>
<p>No. Rewired does not allow you to set the OS mouse cursor position on any platform.</p>
<p>You can use <a href="https://guavaman.com/projects/rewired/docs/PlayerControllers.html#player-mouse">Player Mouse</a> to move one or more sprite-based cursors with a joystick, keyboard, etc.</p>
<p>&nbsp;</p>
<hr />
<h3><a name="source-code" id="default-dead-zone4"></a>Can I get the Rewired source code?</h3>
<p>There is no  source code licensing option at this time. If having the source code is critical to your project, you should not purchase Rewired.</p>
<p>&nbsp;</p>
<hr />
<h3><a name="seat-license" id="seat-license"></a>What does &quot;this extension requires one licence per seat&quot; mean?</h3>
<p>The EULA terms are defined by the <a href="https://unity3d.com/legal/as_terms">Unity Asset Store EULA</a>. See Appendix I for information on assets purchased through the Unity Asset Store. Specifically Appendix I, section 2.3 outlines terms for all editor extension assets.</p>
<p>Rewired is only sold on the Unity Asset Store and the license is bound by these terms as created and defined by Unity. I do not have legal authority to interpret these terms in any other way except as written and defined by the <a href="https://unity3d.com/legal/as_terms">Unity Asset Store EULA</a>. I cannot provide further clarification of or exceptions to these terms.</p>
<p>Please <a href="https://support.unity3d.com/hc/en-us/requests/new" target="_blank">contact Unity</a> for clarification of or questions about the EULA terms.</p>
<p>&nbsp;</p>
<hr />
<h3><a name="discounts" id="discounts"></a>Do you offer educational or bulk license discounts?</h3>
<p>Rewired is sold only through the Unity Asset Store, therefore there are no other licensing options but what is available through the Unity Asset Store.</p>
<p>&nbsp;</p>
<div class="bottom-pager clearfix">
  <a class="back-button" href="Documentation.html" title="Documentation"><span class="button-img"></span>Documentation</a>
</div>

<!-- InstanceEndEditable -->
        </div>
        
    </div>
  <div class="footer clearfix">
   	<p class="left">Copyright &copy;2014-2021 <a href="https://guavaman.com" title="Guavaman Enterprises">Guavaman Enterprises</a>. All rights reserved. No materials may be reproduced without permission.</p>
  	<p class="right"><a href="https://guavaman.com/projects/rewired" title="Return to Rewired Website">Return to Rewired Website</a></p>
  </div>
  <!-- end .content --></div>
  <!-- end .container --></div>
  
  
</body>
<!-- InstanceEnd --></html>
